/**
 * 分页扩展
 */
export class table<T> {
	data: T[] |  undefined; //数据集合
	total: number | undefined = 0; //总数量
	pageIndex: number = 1; //当前页码
	pageSize: number = 10; //每页显示数
	pageSizes: Array<number> = [10, 20, 30];// 每页显示行数配置
	loading: boolean = false; //是否显示加载图标
	query: any; //查询函数
	/**
	 * table表格对象构造器
	 * @param query 查询函数
	 * @param data 数据实体
	 * @param total 总数据量
	 * @param pageIndex 当前页数
	 * @param limit 每页显示行数
	 * @param limit 每页显示行数配置
	 * @param loading 加载状态
	 */
	constructor(query: any = () => { }, data: T[] | undefined = [], total = 0, pageIndex = 1, pageSize = 10, pageSizes: Array<number> = [10, 20, 30], loading = false) {
		this.query = query;
		this.data = data;
		this.total = total;
		this.pageIndex = pageIndex;
		this.pageSize = pageSize;
		this.pageSizes = pageSizes;
		this.loading = loading;
	}

	// 页面大小改变事件（选择每页显示多少条数据时）
	onHandleSizeChange = (val: number) => {
		this.pageSize = val;
		this.query();
	}

	// 页面改变事件
	onHandleCurrentChange = (val: number) => {
		this.pageIndex = val;
		this.query();
	};
}


/**
 * 分页扩展
 */
export class PagedList<T> {
	items: T[] | null | undefined; //数据集合
	totalCount: number | undefined = 0; //总数量
	pageIndex: number = 1; //当前页码
	pageSize: number = 10; //每页显示数
	loading: boolean = false; //是否显示加载图标
	query: any; //查询函数

	/**
	 * table表格对象构造器
	 * @param query 查询函数
	 * @param items 数据实体
	 * @param totalCount 总数据量
	 * @param pageIndex 当前页数
	 * @param pageSize 每页显示行数
	 * @param loading 加载状态
	 */
	constructor(query: any = () => { }, items: T[] | null | undefined = [], totalCount = 0, pageIndex = 1, pageSize = 10, loading = false) {
		this.query = query;
		this.items = items;
		this.totalCount = totalCount;
		this.pageIndex = pageIndex;
		this.pageSize = pageSize;
		this.loading = loading;
	}

	// 页面大小改变事件（选择每页显示多少条数据时）
	onHandleSizeChange(pageSize: number) {
		this.pageSize = pageSize;
		this.query();
	}

	// 页面改变事件
	onHandleCurrentChange = (pageIndex: number) => {
		this.pageIndex = pageIndex;
		this.query();
	};
}

